//配置axios的全局基本路径
axios.defaults.baseURL='http://localhost:8080/'

//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios
// axios.defaults.baseURL='/api' //前端跨域配置
//==============axios前置拦截器实现每次携带token======================//
axios.interceptors.request.use(config=>{
    let token = localStorage.getItem("token");
    if (token) {
        //将token设置到请求头携带给后端
        config.headers["token"] = token;
    }
    return config;
},error => config=>{
    Promise.reject(error)
})
//==============axios后台拦截器实现后端已经退出登录的跳转登录页面======================//
axios.interceptors.response.use(config=>{
    let data = config.data;
    if(!data.success && "no-login" === data.message) {
        localStorage.removeItem("token");
        localStorage.removeItem("loginInfo");
        location.href="/login.html";
    }
    return config;
},error => {Promise.reject(error)})



//配置前台登录拦截器，因为我们这儿里的common.js每一次访问见面都会调用所以在这里配置拦截器
// 判断localStorage中是否有logininfo
let url = location.href;
//不是登陆也不是注册界面就需要拦截
if (url.indexOf("login.html")==-1 && url.indexOf("register.html")==-1 && url.indexOf("callback.html")==-1 && url.indexOf("binder.html")==-1)
{
    let loginInfo = localStorage.getItem("loginInfo");
    if(!loginInfo) {
        location.href = "/login.html"
    }
}

//公共方法的抽取-解析url参数为参数对象
function pram2PramObj(url) {
    let pramStr = url.substring(url.indexOf("?")+1)//code=011sS0000gRmGK1LaU300gLhr81sS00v&state=1
    let pramStrs = pramStr.split("&")//[code=011sS0000gRmGK1LaU300gLhr81sS00v,state=1]
//下面解析为对象，先把它指为空
    let pramObj = {}
    for(let i=0;i<pramStrs.length;i++) {
        //先拿一个变量暂时存储数组中的每一个变量
        let pramTmp = pramStrs[i];//code=011sS0000gRmGK1LaU300gLhr81sS00v
        let pramName = pramTmp.split("=")[0]
        let pramVal = pramTmp.split("=")[1]
        //接下来我们每一个都取到了就直接对象中，因为上面我们定义了一个空的对象，可以直接放
        pramObj[pramName]=pramVal
    }
    return pramObj;
}
